/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package persistencia;

import Utiles.Utiles;
import entidades.PacienteImpl;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import persistencia.agente.Paciente;
import persistencia.agente.PacienteAgente;

/**
 *
 * @author Sebastian
 */
public class IntermediarioPaciente extends IntermediarioPersistencia {

    @Override
    protected String generarSQLBuscarConCriterio(Criterio criterio) {
        String sql = "SELECT * FROM PACIENTE WHERE " + criterio.convertirAString();
        return sql;
    }

    @Override
    protected List<Object> convertirAObjeto(ResultSet result) {

        List<Object> resultado = new ArrayList<Object>();
        PacienteImpl implementacion;
        PacienteAgente agente;

        try {
            while (result.next()) {
                implementacion = new PacienteImpl();
                agente = new PacienteAgente();
                agente.setPaciente(implementacion);

                agente.setOid(result.getString("oidPaciente"));
                agente.setCodPaciente(result.getInt("codPaciente"));
                agente.setNombre(result.getString("nombre"));
                agente.setApellido(result.getString("apellido"));
                agente.setDni(result.getString("dni"));
                agente.setDomicilio(result.getString("domicilio"));
                agente.setFechaNacimiento(result.getDate("fechaNacimiento"));
                agente.setTelefono(result.getString("telefono"));
                agente.setFechaAlta(result.getDate("fechaAlta"));
                agente.setContrasenia(result.getString("contrasenia"));

                resultado.add(agente);
            }

        } catch (Exception e) {
            System.out.println("Error en materialización: " + e.toString());
        }

        return resultado;
    }

    @Override
    protected String generarSQLBuscarTodo() {
        return "SELECT * FROM PACIENTE";
    }

    @Override
    protected String generarSQLBuscarXOid(String oid) {
        return "SELECT * FROM PACIENTE WHERE oidPaciente = '" + oid + "'";
    }

    @Override
    protected String generarSQLGuardar(Object objeto) {
        PacienteAgente ob = (PacienteAgente) objeto;
        String sql = "INSERT INTO PACIENTE (oidPaciente, codPaciente, nombre, "
                + "apellido, dni, domicilio, fechaNacimiento, telefono, fechaAlta, contrasenia) VALUES ("
                + "'" + ob.getOid()
                //ob.getOid() == null || ob.getOid().trim().equals("")? generarOid() : ob.getOid()
                + "', " + ob.getCodPaciente()
                + ", '" + ob.getNombre()
                + "', '" + ob.getApellido()
                + "', '" + ob.getDni()
                + "', '" + ob.getDomicilio()
                + "', '" + Utiles.convertirATIMESTAMP(ob.getFechaNacimiento())
                + "', '" + ob.getTelefono()
                + "', '" + Utiles.convertirATIMESTAMP(ob.getFechaAlta()) 
                + "', '" + ob.getContrasenia()+ "')";
        System.out.println("SQL Guardar: " + sql);
        return sql;
    }

    @Override
    protected String generarSQLActualizar(Object objeto) {
        PacienteAgente ob = (PacienteAgente) objeto;
        String sql = "UPDATE PACIENTE SET "
                + "codPaciente = " + ob.getCodPaciente()
                + ", nombre = '" + ob.getNombre()
                + "', apellido = '" + ob.getApellido()
                + "', dni = '" + ob.getDni()
                + "', domicilio = '" + ob.getDomicilio()
                + "', fechaNacimiento = '" + Utiles.convertirATIMESTAMP(ob.getFechaNacimiento())
                + "', telefono = '" + ob.getTelefono()
                + "', fechaAlta = '" + Utiles.convertirATIMESTAMP(ob.getFechaAlta())
                + "', contrasenia = '" + ob.getContrasenia()
                + "' WHERE oidPaciente = '" + ob.getOid() + "'";
        System.out.println("SQL Actualizar: " + sql);
        return sql;
    }

    @Override
    protected String generarSQLEliminar(Object objeto) {
        return "DELETE FROM PACIENTE WHERE oidPaciente = '" + ((Agente) objeto).getOid() + "'";
    }

    @Override
    protected boolean guardarObjetosCompuestos(Object objeto) {
        throw new UnsupportedOperationException("Not supported yet.");
    }
}
